#pragma once

#include "precompiled.h"
class Camera_Alt;
class Gun;

class Player
{
public:
	Player(void);
	~Player(void);

	void Translate( glm:: vec4 translate );
	void LookRotate( glm::vec3 rotate_euler );

	glm::vec3 Get_Extents( );
	glm::vec3 GetPosition();

	void Update( GLdouble time );
	void Draw();

	// Get
	glm::mat4* getCameraMatrix( );
	glm::vec3 getMovementDirection( );
	glm::vec3 getDirection();
	Camera_Alt const *getCamera() const;
	glm::vec3 const get_gunAimFrom() const;
	glm::vec3 const get_gunAimTo() const;
	glm::vec3 const get_gunButt() const;
	glm::vec3 const get_gunHead() const;
	glm::vec3 const get_lookFrom();
	glm::vec3 const get_lookTo();

	void setPosition( float x, float y, float z);

private:
	void init_gun();
	
	void init_cam_alt();
	void update_cam_alt( GLdouble time );
	void getMovementDirection( glm::vec3 &direction );

	Camera_Alt * cam_alt;
	Gun *gun;
};


inline Camera_Alt const* Player::getCamera() const
{ return cam_alt; }
